#!/bin/bash
#auteur : Frédéric CHEVALIER
#version : 2.2
#date de création : 2008-04-01
#date de modification : 2009-03-15


# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
c=$HOME/Scripts/Sauvegarde
backup=$c/backuperror.log
# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.





# -----------------------------
# Vérifie la présence du volume
# -----------------------------

# Vérifie la connexion au serveur de sauvegarde

if ! ping -c 1 10.16.137.10
then
echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
date >> $backup
sleep 30
sudo shutdown -P now
exit
fi





# --------------------------------
# Monte la partition de sauvegarde
# --------------------------------

# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.

nd=Chevalier	# nom du dossier de sauvegarde
username=EES2	# nom de connexion au dossier de sauvegarde
password=ees2	# mot de passe au dossier de sauvegarde
uid=fred	# nom de de l'utilisateur du compte (sous Linux)
gid=fred	# nom du groupe auquel appartient l'utilisateur (sous Linux)

sudo mount -t smbfs -o username=$username,password=$password,iocharset=utf8,uid=$uid,gid=$gid //10.16.137.10/$nd /media/Sauvegarde/





# -----------------------------------
# Lancement de la sauvegarde générale
# -----------------------------------

echo
echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
echo


touch $backup

# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destinations de la manière suivante :
#<source> <destination> (en ommettant le # de commentaire ici présent)
# e.g.: </home/fred/Bureau/Thèse> </media/Sauvegarde/Thèse>

if [ ! -s $c/list ]
then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))"
echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))" >> $backup
sleep 30
exit
fi

cp $c/list $c/list.u
sed -i 's/> </>\n</g' $c/list.u
sed -i 's/<\|>//g' $c/list.u

while [ -s $c/list.u ]
do
s=$(sed q $c/list.u)
sed -i '1d' $c/list.u
d=$(sed q $c/list.u)
sed -i '1d' $c/list.u

rsync -a --progress -u --delete-after "$s" "$d" 2>> $backup

done

rm $c/list.u





# ----------------
# Rapport d'erreur
# ----------------
# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
# ce que vérifie l'option "-s" :

if [ -s $backup ]
then date >> $backup
else rm $backup
fi





# ---------------------
# Arrêt de l'ordinateur
# ---------------------

sudo shutdown -P now

